package utils;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class TestModel {
    public static int a = 1;
    public static void main(String[] args) throws IOException {
// 1：根据给定的路径创建一个File对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入原路径：");
        String oldFile = sc.nextLine();
        File srcFile = new File(oldFile);
        System.out.println("请输入新路径：");
        String newFile = sc.nextLine();
//        System.out.println("请输入筛选字符：");
//        String str = sc.nextLine();
        // 6：调用方法
//        getAllFilePath(srcFile,newFile,str);
        getAllFilePath(srcFile,newFile);
    }


    // 2：定义一个方法，用于获取给定目录下的所有内容，参数为第1步中创建的File对象,做字符判断
    public static void getAllFilePath(File srcFile,String toPath,String str) {
        // 3：获取给定的File目录下所有的文件或者目录的File数组
        File[] fileArray = srcFile.listFiles();
        // 4：遍历该File数组，得到每一个File对象
        if (fileArray != null) {
            for (File file : fileArray) {
                // 5：判断该File对象是否是目录
                if (file.isDirectory()) {
                    // 5.1：是：递归调用
                    getAllFilePath(file,toPath,str);
                } else {
                    // 5.2：不是：获取绝对路径
                    String path = file.getAbsolutePath();
                    boolFileName(path,toPath,str);
                    a++;
                }
            }
        }
    }
    // 2：定义一个方法，用于获取给定目录下的所有内容，参数为第1步中创建的File对象，不做字符判断
    public static void getAllFilePath(File srcFile,String toPath) {
        // 3：获取给定的File目录下所有的文件或者目录的File数组
        File[] fileArray = srcFile.listFiles();
        // 4：遍历该File数组，得到每一个File对象
        if (fileArray != null) {
            for (File file : fileArray) {
                // 5：判断该File对象是否是目录
                if (file.isDirectory()) {
                    // 5.1：是：递归调用
//                    getAllFilePath(file,toPath,str);
                    getAllFilePath(file,toPath);
                } else {
                    // 5.2：不是：获取绝对路径
                    String fileName = file.getName();
                    String path = file.getAbsolutePath();
                    a++;
                    System.out.println(a);
                    moveFile(path,toPath);
                }
            }
        }
    }

    //读取内容，判断是否含有某字符串
    public static void boolFile(String path,String toPath,String str) {
        File file = new File(path);
        if (file.isFile()) {
            try{
//                判断内容
                String txt = FileUtils.readFileToString(file);
                if(txt.contains(str)){
                    moveFile(path,toPath);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    //读取文件名，判断是否含有某字符串
    public static void boolFileName(String path,String toPath,String str) {
        File file = new File(path);
        if (file.isFile()) {
            //判断标题
            String name = file.getName();
            if(name.contains(str)){
                moveFile(path,toPath);
            }
        }
    }

    //移动到toPath
    public static void moveFile(String fromPath,String toPath) {
        File file = new File(fromPath);
        if (file.isFile()) {
            File toFile = new File(toPath + "\\" + file.getName());
            boolean b = file.renameTo(toFile);
            if(b){
                System.out.println(a);
            }else {
                System.out.println("fail");
            }
        }
    }
}